# 98.Python 编程中遇到的问题

经常使用Python编程,会遇到各种简单的问题,本文档就是记录,方便后续再次遇到。

# 1. urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compile

ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with LibreSSL 2.8.3. See: https://github.com/urllib3/urllib3/issues/2168

原因和解决方案:

  1. 机器的openssl版本太低了,可以输入 openssl version查看ssl版本,需要大于1.1.1版本,可以升级下openssl到最新版本

  2. 查询urllib3/urllib (opens new window) 查看原因,主要是urllib3版本为v2.0,依赖openssl高版本,可以自己使用低于2.0版本的urllib3. 比如: #创建requirements.txt文件,写上 urllib3==1.24.3 指定urllib3版本,执行下面的命令 pip install -r requirements.txt

  3. 如果还是不行,可以看下urllib3是哪个依赖库下载的,例如我遇到的是依赖了request库,间接下载了urllib3,由于request下载的是2.30.0最新版本,依赖下载了urllib3 2.0版本,所以我指定了request为2.29.0版本,也解决了该问题.

pip install "requests==2.29.0"

# 2. Python Segmentation fault错误定位办法

有时候运行python脚本,会遇到Segmentation fault (core dumped) 错误,这个错误而且没办法被try-catch-exception 捕捉。那如何查看原因呢?

  1. Python3使用faulthandler

faulthandler在python3.3之后成为标准库,可以通过import到代码中启用,也可以直接通过命令行来启用。

import faulthandler
# 在import之后直接添加以下启用代码即可
faulthandler.enable()
# 后边正常写你的代码

1
2
3
4
5

直接通过命令行来启用,运行时添加-X faulthandler参数即可:

python3 -X faulthandler my_script.py

  1. Demo
import traceback


def test_segmentation_fault():
    # 对于segmentation fault并不能catch到异常,即此处try没效果
    try:
        ctypes.string_at(0)
    except Exception as e:
        print(traceback.format_exc())


if __name__ == "__main__":
    test_segmentation_fault()

1
2
3
4
5
6
7
8
9
10
11
12
13
14

相关链接:

# 3. Python 创建多个环境

Python应用程序通常会使用不在标准库内的软件包和模块。应用程序有时需要特定版本的库,因为应用程序可能需要修复特定的错误,或者可以使用库的过时版本的接口编写应用程序. 如果需要不同的环境,可以参考虚拟环境和包 (opens new window) 来构建不同的环境。

常用命令:

#创建环境
python -m venv llm-env

# 启用当前环境
source llm-env/bin/activate

# 安装依赖的包
pip install -r requirenments.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
1
2
3
4
5
6
7
8

# 4.pip3 install 报错-Can‘t connect to HTTPS URL because the SSL

通过pip 安装依赖包的时候,有时候需要配置第三方仓库。如果配置的https,可能会遇到 Can‘t connect to HTTPS URL because the SSL错误,原因是安装的python没有ssl。可以按照这个博客来配置ssl环境。linux安装python3(超详细)解决Can‘t connect to HTTPS URL because the SSL 的报错 (opens new window)

Last Updated: 2/6/2024, 5:22:27 PM
Apache License 2.0 | Copyright © 2022 by xueliang.wu 苏ICP备15016087号